#学习装饰器目的：对已有函数功能进行额外的扩展，装饰器本质上是一个闭包函数
#装饰器功能特点：
#1.不修改已有函数的代码
#2.不修改已有函数的调用方式
#3.给已有函数添加额外的功能

# def comment():
#     print("发表评论")

# comment()
#对comment函数添加先登录功能

#定义装饰器
def func(fun): #如果闭包函数的参数有且只有一个并且是函数类型，那么这个闭包函数称为装饰器
    print("装饰器执行了")
    def inner():
        print("请登录")
        fun()
    return inner

@func
def comment():
    print("发表评论")

#装饰器语法糖写法，@装饰器名称

#调用装饰器对已有函数进行装饰
# comment = func(comment)
#原有调用方式不变
comment()